<?php
interface NSerializable
{
   // ...
}
class Object
{
   // ...
}
/**
* Klasa counter.
*/
class Counter extends Object implements NSerializable
{
   const START = 0;
   private static $c = Counter::START;
   /**
    * Wywoanie funkcji count().
    *
    * @access  public
    * @return  int
    */
   public function count()
   {
       return self::$c++;
   }
}
// Utworzenie egzemplarza klasy ReflectionClass.
$class = new ReflectionClass('Counter');
// Wywietlenie podstawowych informacji o klasie.
printf(
   "===> To %s%s%s %s '%s' [extends %s]\n" .
   "     zadeklarowana w %s\n" .
   "     wiersze od %d do %d\n" .
   "     posiada modyfikatory dostpu %d [%s]\n",
       $class->isInternal() ? 'wbudowana' : 'zdefiniowana przez uytkownika',
       $class->isAbstract() ? ' abstract' : '',
       $class->isFinal() ? ' final' : '',
       $class->isInterface() ? 'interfejs' : 'klasa',
       $class->getName(),
       var_export($class->getParentClass(), 1),
       $class->getFileName(),
       $class->getStartLine(),
       $class->getEndline(),
       $class->getModifiers(),
       implode(' ', Reflection::getModifierNames(
                                   $class->getModifiers()))
       );
// Wywietlenie komentarza znajdujcego si w klasie.
printf("---> Dokumentacja:\n %s\n",
                    var_export($class->getDocComment(), 1));
// Wywietlenie interfejsw zaimplementowanych przez klas.
printf("---> Implementuje:\n %s\n",
                    var_export($class->getInterfaces(), 1));
// Wywietlenie staych klasy.
printf("---> Stae: %s\n",
                     var_export($class->getConstants(), 1));
// Wywietlenie waciwoci klasy.
printf("---> Waciwoci: %s\n",
                     var_export($class->getProperties(), 1));
// Wywietlenie metod klasy.
printf("---> Metody: %s\n",
                     var_export($class->getMethods(), 1));
// Jeeli mona utworzy egzemplarz klasy, to zostanie on teraz utworzony.
if ($class->isInstantiable())
{
   $counter = $class->newInstance();
   echo '---> $counter jest egzemplarzem? ';
   echo $class->isInstance($counter) ? 'tak' : 'nie';
   echo "\n---> new Object() jest egzemplarzem? ";
   echo $class->isInstance(new Object()) ? 'tak' : 'nie';
}
?>
